Memory uncorrectable error handling technique for reducing the impact of noise

ABSTRACT

Techniques for handling uncorrectable errors occurring during memory accesses reduce the likelihood of mis-correction of errors due to the presence of noise. When an uncorrectable memory error is detected in response to an access to a memory device, a memory controller managing the interface to the memory halts issuing of access requests to the memory device until a predetermined time period has elapsed. In-flight memory requests are marked for retry, and responses to pending request are flushed. A calibration command may be issued after the predetermined time period has elapsed. After the predetermined time period has elapsed and any calibration performed, the requests marked for retry are issued to the memory device.

The present Application is a Continuation of U.S. patent application Ser. No. 13/922,365, filed on Jun. 20, 2013 and claims priority thereto under 35 U.S.C. §120. The disclosure of the above-referenced parent U.S. Patent Application is incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention is related to processing systems and processors, and more specifically to techniques for handling uncorrectable memory errors that reduce the impact of noise.

2. Description of Related Art

Present day memory subsystems include substantial error correction mechanisms. The error correction mechanisms make it possible to extend the size, increase the speed and/or reduce the power consumption of memory devices, while maintaining error-free operation via correction of correctable errors and via re-trying occasional uncorrectable errors that occur, i.e., those errors that exceed the capacity of the error-correcting code (ECC) that is employed for error checking and correction.

When uncorrectable errors occur, a typical response is to retry the memory access for which the error occurred, in the hope that the error was due to a transient condition that will not cause a memory error on the second attempt. However, retry of a memory access for which the error has an underlying cause increases the risk that a subsequent read to a different memory location error will also experience an error that will go undetected. Error correction algorithms have a very small but finite mis-correction rate in the presence of errors. Therefore, a subsequent error may not actually be corrected and produce an erroneous value.

Therefore, It would therefore be desirable to provide a method of managing memory operations that provides more reliable and robust operation, in particular when uncorrectable memory errors are detected that can be caused by transient noise events.

BRIEF SUMMARY OF THE INVENTION

The invention is embodied in a method that provides access to memory devices by a processor using a memory controller.

The method receives memory access operations from a bus via a bus interface, and a device interface issues access commands to memory devices in response to the memory access operations. The method for controls the bus interface and the memory device interface so that when an uncorrectable error occurs in response to an access command, the device interface stops issuing access commands to the memory device until a predetermined time period has elapsed. After the predetermined time period has elapsed, access to the memory device is retried by reissuing the access command to complete the associated memory access operation.

The foregoing and other objectives, features, and advantages of the invention will be apparent from the following, more particular, description of the preferred embodiment of the invention, as illustrated in the accompanying drawings.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING

The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives, and advantages thereof, will best be understood by reference to the following detailed description of the invention when read in conjunction with the accompanying Figures, wherein like reference numerals indicate like components, and:

FIG. 1 is a block diagram illustrating a processing system in which techniques according to an embodiment of the present invention are practiced.

FIGS. 2 depicts details of memory controller 15 according to an embodiment of the present invention.

FIG. 3 is a flowchart depicting a method of managing access to a memory device in accordance with an embodiment of the present invention.

FIG. 4 is a timing diagram depicting operations of a memory controller in accordance with an embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

The present invention relates to memory controllers and other circuits and computer systems in which uncorrectable errors received from the memory devices in response to access requests trigger a waiting period during which access requests are not sent for a predetermined period of time after an uncorrectable error is detected. By introducing the waiting period, the likelihood that multiple errors due to a momentary noise burst or other temporary cause will yield an erroneous correction is reduced. The methodology improves memory sub-system robustness in the presence of noise, such as power supply noise, which tends to have a duration that can cause multiple uncorrectable errors. In-flight access requests to the memory device are marked for retry and responses to pending requests are flushed. A calibration may optionally be requested after the predetermined wait period has expired. After the predetermined time period has expired and any calibration performed, the access requests marked for retry are re-issued.

Referring now to FIG. 1, a processing system in accordance with an embodiment of the present invention is shown. The depicted processing system includes a number of processors 10A-10D, each coupled to a memory controller/bridge 15A, 15B in conformity with an embodiment of the present invention. The depicted multi-processing system is illustrative, and processing system in accordance with other embodiments of the present invention include uni-processor systems having symmetric multi-threading (SMT) cores. Processors 10A-10D are identical in structure and include cores 20A-20B and cache/local storage 12, which may be a cache level, or a level of internal system memory. Processors 10A-10B are coupled to a main system memory 14A by memory controller/bridge 15A, a storage subsystem 16, which includes non-removable drives and optical drives, for reading media such as a CD-ROM 17 forming a computer program product and containing program instructions implementing operating systems and other software for execution by processors 10A-10D, The illustrated processing system also includes input/output (I/O) interfaces and devices 18 such as mice and keyboards for receiving user input and graphical displays for displaying information. Processors 10C-10D are similarly coupled to main system memory 14B, storage subsystem 16, which includes non-removable drives and optical drives, for reading media such as CD-ROM 17, by memory controller/bridge 15B. While the system of FIG. 1 is used to provide an illustration of a system in which the memory controller architecture of the present invention is implemented, it is understood that the depicted architecture is not limiting and is intended to provide an example of a suitable computer system in which the techniques of the present invention are applied.

Referring now to FIG. 2 a memory controller 15 in accordance with an embodiment of the invention that can be used to implement memory controllers 15A, 15B of FIG. 1, is shown. Memory controller 15 includes a bus interface unit 20 at which memory access operations are received by memory controller 15 from a bus that connects memory controller 15 to a processor or other external requestor, such as one of processors 10A-10D of FIG. 1. Memory controller 15 is also coupled to memory devices such as a memory resource 30A and a memory resource 30B, which in the example, represent memory devices supporting two ranks, rank A and rank B. Memory resources 30A, 30B and bus interface unit 20 are coupled to I/O queues 22 through which data values are exchanged between memory resources 30A, 30B and the bus. An error checking unit 23 performs error checking on values retrieved from memory resources 30A, 30B. The errors are generally error bits set in the responses to access commands issued to memory resources 30A, 30B, as the error checking is performed within memory resources 30A, 30B using additional parity and/or error-correction bits stored as extension to the values stored in memory resources 30A, 30B. However, in other implementations, error checking may be performed external to memory resources 30A, 30B in accordance with other embodiments of the invention. When error checking unit 23 detects an uncorrectable error indication received from one of memory resources 30A, 30B in response to an access command issued to the memory resources 30A, 30B, an uncorrectable error indication ue is set, which causes a queue control 26 to take action to retry the access command In accordance with an embodiment of the invention, queue control 26 halts further access to the particular memory resources 30A, 30B for a predetermined time period and takes other actions as described in further detail below.

Memory controller 15 also includes a command queue 24 from which commands are issued to memory resources 30A, 30B and a memory refresh and calibration control 28 that issues commands to memory resources 30A, 30B to recalibrate and periodically to enter refresh cycles as required by memory resources 30A, 30B. A completion table 32 managed by queue control 26 tracks in-flight requests that have been issued to memory resources 30A, 30B as access commands Queue control 26, in response to determining that an uncorrectable error was received, takes further action by halting the issuance of access commands from command queue 24 to the particular one of memory resources 30A, 30B at which the error occurred (or alternatively all of memory resources 30A, 30B). Queue control 26 further marks all of the in-flight access commands pending in a completion table 32 for the particular memory resources 30A, 30B for retry. Queue control 26 may further flush other responses received in I/O queue 22 from the particular memory resources 30A, 30B. After a predetermined time period has elapsed, queue control 26 directs memory refresh and calibration control 28 to send a calibrate command to the particular memory resources 30A, 30B. Queue control 26 may also direct memory refresh and calibration control 28 to send one or more refresh commands to the particular memory resources 30A, 30B during the predetermined time period, to ensure that the refresh rate specifications of memory resources 30A, 30B are not violated. The above described memory controller 15 is only exemplary, and the memory controller blocks and control logic described above is not limited as to location, for example memory controller 15 can be located within particular devices that implement processors, memory, memory controllers and/or the devices that couple the above-listed device within a processing system according to embodiments of the present invention.

Referring now to FIG. 3, a method of managing access to a memory device in accordance with an embodiment of the present invention is illustrated in a flowchart. Until an uncorrectable memory error is received (decision 50), normal memory operation continues (step 51). When an uncorrectable memory error is received (decision 50), memory accesses are halted (step 52), issued memory accesses are marked for retry (step 53) and refresh operations are permitted (step 54). After a predetermined time period, which is generally a static, programmable value, has elapsed (decision 55), a calibration is performed (step 56) and then the read operations that were marked for retry are retried (step 57). If another uncorrectable memory error is received (decision 58), the uncorrectable error is returned to the external requestor (step 59). Until the system is shut down (decision 60), or the software application that was requesting the data is terminated, the method of steps 50-59 are repeated to handle incoming memory accesses.

Referring now to FIG. 4, a timing diagram illustrating operation of memory controller 15 is shown. A noise burst occurs in power supply voltage V_(DD), causing an uncorrectable error to occur in response to a memory read access command, resulting in assertion of uncorrectable error indication ue at time t₀. At time t₁, queue control 26 halts issuing new memory accesses to the memory device, as indicated by the signal Wait, which extends for a time period t_(B), which is set to a time equal to or longer than the expected duration of noise bursts or other disturbances for the system. The total delay t_(D), corresponding to the predetermined time period mentioned above, extends from time t₁ to time t₃, as total delay t_(D) includes time to complete flushing operations for pending responses from the memory device. At time t₃, a retry interval is entered, t_(R), during which the requests previously marked for retry are retried once. As mentioned above, if a second uncorrectable error occurs, the error is passed up to the external requestor.

While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form, and details may be made therein without departing from the spirit and scope of the invention. 

What is claimed is:
 1. A method of managing access to a memory device, the method comprising: receiving a memory access operation from an external requestor; queuing the memory access operation in a memory controller queue; issuing a command to the memory device to perform an operation in conformity with the memory access operation; receiving a response from the memory device in response to the command; determining that the response indicates a memory error; in response to determining that the response indicates a memory error, halting all access requests to the memory device until a predetermined time period has elapsed; and in response to completion of the halting, retrying the issuing in order to complete the memory access operation.
 2. The method of claim 1, further comprising permitting refresh operations to continue during the halting.
 3. The method of claim 1, further comprising: sending a calibration command to the memory device after expiration of the predetermined time period; and waiting until a calibration performed in response to the calibration command has completed before performing the retrying.
 4. The method of claim 1, further comprising: in response to determining that the response indicates a memory error, marking all memory read operations that are in-progress as requiring retry; and in response to completion of the halting, retrying the memory read operations marked as requiring retry.
 5. The method of claim 1, further comprising: in response to determining that the response indicates a memory error, flushing all responses received for memory read operations received from the memory device; marking all of the memory read operations for which responses were flushed as requiring retry; and in response to completion of the halting, retrying the memory read operations marked as requiring retry.
 6. The method of claim 1, further comprising: in response to retrying the issuing, receiving another response from the memory device in response to a retried submission of the command; determining that the another response indicates a memory error; in response to determining that the another response indicates a memory error, responding to the memory access operation to the external requestor with an indication that the memory error occurred.
 7. The method of claim 1, further comprising: in response to determining that the response indicates a memory error, marking all memory read operations that are in-progress as requiring retry; in response to determining that the response indicates a memory error, flushing all responses received for memory read operations received from the memory device; sending a calibration command to the memory device after expiration of the predetermined time period; in response to completion of calibration commanded by the calibration command, retrying the memory read operations marked as requiring retry; in response to retrying the issuing, receiving another response from the memory device in response to a retried submission of the command; determining that the another response indicates a memory error; and in response to determining that the another response indicates a memory error, responding to the memory access operation to the external requestor with an indication that the memory error occurred. 